Здравствуйте, уважаемые форумчане!
Несколько дней бьюсь с задачей. По отдельности всё понятно и даже работает, но системно не получается.
Суть: нужно на JavaScript через API функции связаться с погодным сервером и вывести данные на своей странице. Вроде бы всё просто.
1) зарегистрировался на DarkSky, получил бесплатный API-ключ. Разобрался с форматом GET-запроса. Пример:
https://api.darksky.net/forecast/eea...ng=ru&units=si
2) через браузерную строку запроса, вручную погодный сервер вполне корректно выдаёт прогноз погоды в формате JSON
{"latitude":51.6606,"longitude":39.2006,"timezone" :"Europe/Moscow","currently":{"time":1556180139,"summary":" Ясно","icon":"clear-day","precipIntensity":0,"precipProbability":0,"te mperature":23.98,"apparentTemperature":23.98,"dewP oint":2.59,"humidity":0.25,"pressure":1025.31,"win dSpeed":3.2,"windGust":4.36,"windBearing":316,"clo udCover":0,"uvIndex":6,"visibility":10.38,"ozone": 331.53},"flags":{"sources":["cmc","gfs","icon","isd","madis"],"nearest-station":4.525,"units":"si"},"offset":3}
3) посредством стороннего JSON Parser'а (
http://jsonparseronline.com/) получается легко декодировать представленный ассоциативный массив
4) пытался несколько дней вогнать все эти наработки в JAva Script код и толком ничего не выходило
Запрос делаю ассиметричным через XMLHttpRequest.
В статусе ответа всегда возвращается ноль.
Текст запроса (строка с адресом и параметрами) вроде верен.
Соответственно, раз 0, то не возвращается текст ответа (undefined)
Помогите пожалуйста разобраться, свести всё в цельное рабочее состояние.
Я уж много вспомогательного материала перекроил, но ошибку, недочёт найти пока самостоятельно не смог.
Буду рад вашей помощи...
(извините, если правильно оформил запрос-подсвеченный синтаксис и т.д.)
<script>
window.alert("Тест работоспособности");
var xhr = new XMLHttpRequest();
xhr.open("GET","https://api.darksky.net/forecast/eeaf063f48cd92e5300e9028ce268e12/51.6606,39.2006?exclude=minutely,alerts,hourly,dai ly&flags&lang=ru&units=si", true);
xhr.send(null);
var status = xhr.status;
alert(xhr.status);
if(status==200)
document.write("Текст ответа: " + xhr.responseText)
else if(status==404)
document.write("Ресурс не найден")
else
document.write(request.statusText)
//window.alert("Статус: "+xhr.statusText);//нашёл что-то
//window.alert(xhr.responseText);//нашёл что-то
//var json = JSON.parse(xhr.responseText);
window.alert("Тест2");
//var data = json[Object.keys(json)[0]];
//window.alert(data);
window.alert("Тест3");
alert(document.location);
document.write(txt);
window.alert(getAllResponseHeaders());
</script>